package com.proyecto.core.vista.echo.componentes;

import java.util.ArrayList;
import java.util.List;

import com.proyecto.core.modelo.echo.constantes.ParametrosIniciales;

import echopointng.table.SortableTableModel;
import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.ContentPane;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.event.ActionEvent;

public class CPAreaLista extends ContentPane {

	private static final long serialVersionUID = 1492150036441717909L;
	
	private Object objetoDTO = new Object();

	private RowPSTabla gestionTabla= null; 
	
	private List listaDatos = null;

	private Row rowTabla;
	
	private List listaDatosTodos = null;
	
	

	public CPAreaLista() {
		super();

		// Add design-time configured components.
		initComponents();
		// areadatos.setobjetoDTO(objetoDTO);
	}

	public void inicializar() {
	}

	public void generarTabla(ArrayList<String> pTitulosTabla,
			ArrayList<String> pCamposTabla, int orden) {
		
		
		gestionTabla = new RowPSTabla(orden);

		for (int i = 0; i < pTitulosTabla.size(); i++) {
			gestionTabla.incluirCampo(pTitulosTabla.get(i), pCamposTabla.get(i));
		}
		
		gestionTabla.generarTabla();
		
		rowTabla.add(gestionTabla);
	}

	public void cargarTabla() {
		gestionTabla.cargarTabla(listaDatos);
		if(ParametrosIniciales.PAGINABLE.equalsIgnoreCase("REFRESCANDO")){
			gestionTabla.getTxtPaginaActual().setText(gestionTabla.getPaginaActual()+"/"+getGestionTabla().getTotalPaginas());
		}
	}

	public void cargarTadosCompleto(){
		gestionTabla.cargarDatosCompletosParaFiltros(listaDatosTodos);
	}
	
	public void rutinaAccionConsultar() {
		// TODO Auto-generated method stub
		System.out.println("buscando registros");
	}

	public void actualizarFilaActual(ActionEvent arg0) {
//		objetoDTO = gestorTabla.ManejaEvento(arg0);
		objetoDTO = gestionTabla.ManejaEvento(arg0);
	}

	public void seleccionarColumnaOrdable(int nc){
		
		
	}
	// public Object obtenerFilaActual(){
	// objetoDTO = gestorTabla.obtenerFilaActual();
	// return objetoDTO;
	// }

	public Object getObjetoDTO() {
		return objetoDTO;
	}

	public void setObjetoDTO(Object pobjetoDTO) {
		this.objetoDTO = pobjetoDTO;
	}


//	public PSTabla getGestorTabla() {
//		return gestorTabla;
//	}
	
	public void ordenarPorColumna(int c){
		//TODO: revisar muy bien...
		((SortableTableModel) (gestionTabla.getTabla().getTabla().getModel())).sortByColumn(c,
				gestionTabla.getDirectivaOrden());
	}
	

	public void setListaDatos(List pLista) {
		this.listaDatos = pLista;
		this.cargarTabla();
//		this.ordenarPorColumna(0);
	}

	public List getListaDatos() {
		return this.listaDatos;
	}

	public List getListaDatosTodos() {
		return listaDatosTodos;
	}

	public void setListaDatosTodos(List listaDatosTodos) {
		try {
			this.listaDatosTodos = listaDatosTodos;
			cargarTadosCompleto();			
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("e.setListaDatosTodos: " + e.getMessage());
		}

	}
	/**
	 * Configures initial state of component. WARNING: AUTO-GENERATED METHOD.
	 * Contents will be overwritten.
	 */
	private void initComponents() {
		rowTabla = new Row();
		rowTabla
				.setAlignment(new Alignment(Alignment.CENTER, Alignment.DEFAULT));
		add(rowTabla);
	}

	public RowPSTabla getGestionTabla() {
		return gestionTabla;
	}

	public void setGestionTabla(RowPSTabla gestionTabla) {
		this.gestionTabla = gestionTabla;
	}

	public Row getRowTabla() {
		return rowTabla;
	}

	public void setRowTabla(Row rowTabla) {
		this.rowTabla = rowTabla;
	}


}
